Data storage devices generally operate to store and retrieve user data in a fast and effective manner. Some data storage devices utilize solid-state memory elements (cells) to store the user data, such as in the case of a solid-state drive (SSD). The memory cells can be volatile or non-volatile, and can take a variety of constructions such as but not limited to dynamic random access memory (DRAM), static random access memory (SRAM), Flash, electrically erasable programmable read only memory (EEPROM), spin-torque transfer random access memory (STRAM), and resistive random access memory (RRAM).
The cells can be programmed to store data in relation to a given programmed state. The programmed state can be sensed by applying a read current to the cell and comparing a voltage associated with the cell to a suitable reference voltage using a sense amplifier. Each cell can be used to store a single bit of user data, or can be used to store multiple bits of user data.
The cells can be arranged within a memory array so as to be individually accessible during a read operation so that the programmed state of each cell can be determined individually. Alternatively, the cells can be arranged so that a selected amount of data (e.g. a page of data, etc.) is concurrently read out of the array during a given read operation.
A given cell programmed state will generally provide a nominal readback characteristic during a read operation. Different cells in an array that are programmed to the same programmed state may exhibit variations in these readback characteristics. Such variations in memory cell programmed state distributions can make it difficult to reliably select appropriate reference voltages to distinguish between the various cell programmed states.